######################################################################
# Ref. libstrophe library build script
#
######################################################################
import os
import subprocess

Import('env')

base_dir = env.get('SRC_DIR')
build_dir = env.get('BUILD_DIR')
target_os = env.get('TARGET_OS')
target_arch = env.get('TARGET_ARCH')
with_ra_ibb = env.get('WITH_RA_IBB')

SRC_NAME = 'wks_xep0047'
EXT_NAME = 'wksxmppxep'
EXT_BASE = 'extlibs/' + EXT_NAME
EXT_PATH = EXT_BASE + '/' + SRC_NAME
SRC_PATH = base_dir + '/' + EXT_PATH
INC_PATH = SRC_PATH + '/include'
LIB_PATH = SRC_PATH
WJSXMPPXEP_LIBS = ['wksxmppxep', 'm', 'crypto']

if with_ra_ibb:
    env.SConscript('#/extlibs/libstrophe/SConscript')
    if not os.path.exists(INC_PATH):
        raxmpp_env = Environment(ENV=os.environ)
        c = raxmpp_env.Action([
            'git clone https://github.com/WorksSystems/wks_xep0047.git ' + SRC_NAME,
            'cd ' + SRC_NAME + ' && git checkout 8e9f42d02a0f416001065d1cddc1ab07974cef14'
        ])

        print('Downloading ' + SRC_NAME + ' library ...')
        if raxmpp_env.Execute(c):
            msg = '''
*********************************** Error: ************************************
* Please download ra_xmpp as following:
*     $ git clone https://github.com/WorksSystems/wksxmpp_chat.git extlibs/wksxmppxep/wksxmpp_chat
*     $ cd extlibs/wksxmppxep/wksxmpp_chat
*     $ git checkout 8e9f42d02a0f416001065d1cddc1ab07974cef14
*******************************************************************************
'''
            Exit(msg)
        else:
            print('Download ' + SRC_NAME + ' library complete')

    if not env.GetOption('clean'):
        print('Building with ' + SRC_NAME)
        os.chdir(SRC_PATH)
        if not os.path.exists('libwksxmppxep.so'):
            LIBSTROPHE_BASE = base_dir + '/extlibs/libstrophe/libstrophe'
            foo = subprocess.getoutput('make LIBSTROPHE_BASE=' +
                                         LIBSTROPHE_BASE + ' libraries')
            print(foo)
        if not os.path.exists('libwksxmppxep.so'):
            msg = 'Building with ' + SRC_NAME + ' failed.'
            Exit(msg)
        else:
            foo = subprocess.getoutput('cp libwksxmppxep.so ' + build_dir)
            print(foo)
            foo = subprocess.getoutput('cp libwksxmppxep.a ' + build_dir)
            print(foo)
        print('Building with ' + SRC_NAME + ' Completely.')

        env.PrependUnique(
            CPPPATH=[INC_PATH],
            RALIBS=WJSXMPPXEP_LIBS,
            RALIBPATH=[LIB_PATH],
            RARPATH=[LIB_PATH])
        env.AppendUnique(LIBS=WJSXMPPXEP_LIBS, LIBPATH=[LIB_PATH])
        env.AppendUnique(LIBS=['boost_system', 'boost_thread'])

if env.GetOption('clean'):
    act = env.Action(['cd ' + SRC_PATH, 'make clean'])
    env.Execute(act)
    if os.path.isfile(build_dir + '/libwksxmppxep.so'):
        act2 = env.Action(['rm ' + build_dir + '/libwksxmppxep.*'])
        env.Execute(act2)
